#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSplineSeries>
#include <QDateTime>
#include <QDateTimeAxis>
#include <QValueAxis>
#include <QChart>
#include <QTimer>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    // 在头文件中添加
    // 上一次刷新图表的时间，结合refreshTempChartTimeGap参数控制图表刷新频率
    static qint64 preUpdateTempChartTime;
    // 在绘制温度曲线的控件上，显示的点个数，
    // 如果每秒钟刷新一次数据（refreshTempChartTimeGap=1000），则控件上显示60个点，横轴显示60秒内的数据
    const int showTempPointMaxCount = 60;
    // 刷新一次温度数据的时间间隔，单位毫秒，越小刷新越快。
    // 结合showTempMaxCount参数表示：图表显示的时间范围为
    //showTempPointMaxCount*refreshTempChartTimeGap
    static const int refreshTempChartTimeGap = 1000;
    // 图表第一次显示时间
    QDateTime chartViewFirstShowTime;
    // 添加最大、最小、平均温度的点坐标序列
    QSplineSeries * globalMaxTempSplineSeres = NULL;
    QSplineSeries * globalMinTempSplineSeres = NULL;
    QSplineSeries * globalAvgTempSplineSeres = NULL;
    // 2022.11.30 新增 @{
    QChart *chart = NULL;
    QDateTimeAxis *dateTimeAxisX = NULL;
    QValueAxis *valueAxisY = NULL;
    // @}
    /** 初始化显示时间-温度的表视图**/
    void initTempChartView();
    /** 显示并更新时间-温度(最高、最低、平均温)图，所有温度同时更新，刷新图表函数*/
    void showTempChartView(float maxTemp, float minTemp, float avgTemp);

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
